<?php

   $action = $_POST['action'];
   $sessionName = "traces_files/" . $_POST['sessionName'];

    if (!isset($action))
      header("X-JSON: {} ");

	//prise en charge des fonctions des api's (requetes serveur)
    else 
	{
		//Fonctions getMessages()/GetMessages -> renvoie l'ensemble des messages du pool 
		//(fichier associe) depuis l'index transmis dans la requete)
        if ($action == "getMessages") 
		{
        	if (file_exists($sessionName)) 
				$array = file($sessionName);
			//index de depart 
        	$since = intval($_POST['since']);

        	while (!file_exists($sessionName) || count($array) <= $since)
			{
        		sleep(0.3);
        		if (file_exists($sessionName))
        			$array = file($sessionName);
        	}

 			$len = min(count($array) - $since,50);
       		$back = array ('lastMessages' => array_slice  ( $array, $since,$len), 'lastIndex' => $since+$len  );
			header("X-JSON: " . json_encode($back));
        }

		elseif ($action == "getMessagesForJava" || $action == "getMessagesForCSharp")
		{
        	if (file_exists($sessionName))
        		$array = file($sessionName);
        	$since = intval($_POST['since']);

			while (!file_exists($sessionName) || count($array)<=$since)
			{
        		sleep(2);
        		if (file_exists($sessionName))
        			$array=file($sessionName);
        	}

 			$len = min(count($array) - $since,50);
       		$back = array ('lastMessages' => array_slice  ( $array, $since,$len), 'lastIndex' => $since+$len  );
			echo(json_encode($back));
        }
		//Lors de l'instanciation du bus Wse, il joint la session $sessionName sur le serveur
		//le serveur cree le pool de messages (fichier) associe si celui-ci n'existe pas deja
		elseif ($action == "joinSession") 
		{
			if (file_exists($sessionName))
        		$last=count(file($sessionName));
			else 
				$last = 0;
				
       		$back = array ('lastIndex' => $last  );
			header("X-JSON: " . json_encode($back));
        }

		elseif ($action == "joinSessionForJava" || $action == "joinSessionForCSharp") 
		{
			if (file_exists($sessionName))
        		$last=count(file($sessionName));
			else 
				$last = 0;
				
       		$back = array ('lastIndex' => $last  );
			echo(json_encode($back));
        }
		//Depot d'un message sur le pool de message de la session en cours associee
		elseif ($action == "sendMessage") {
			$trace = str_replace("\\","",$_POST['message']);
			file_put_contents($sessionName,$trace.PHP_EOL,FILE_APPEND);
        	$retour = array ('last' => count(file($sessionName)) );
			header("X-JSON: " . json_encode($retour));
        }     
   		else
	        header("X-JSON: {} ");
    }
        	
?>